#include "hardware.h"
#include "key.h"
#include "delay.h"
#include "spi.h"
#include "adc.h"
#include "usart.h"
#include "tim.h"
#include "max5541_task.h"
#include "pid.h"
/* 
 * ===  GPIO初始化  ===================================================================
 *		 一些结构体初始化
 * ====================================================================================
 */
 void GPIO_Config(void)
{
	/*		 一些结构体初始化*/
	/* 使用前修改这些结构体*/
	Hall_Struct_Init(&Hall_Ctrl);
	Filtering_Struct_Init (&Filtering);
	Speed_Current_Init (&Current_Ctrl,1485);
	 /*		 GPIO初始化*/
	USART3_Config(115200,Data_Len,Stop_Data,Parity_Data);
	enableU3Int();
	ADVANCE_TIM_Config();
	TIM5_Init();
	SPI2_Config();
	ADC_Config();
	HF46F_GPIO_Init();
	LED_GPIO_Init();
	KEY_GPIO_Init();
}
/* 
 * ===  中断初始化  ===================================================================
 *
 * ====================================================================================
 */
void NVIC_Config(void)
{
	/* Configure the Priority Group to 2bits */
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	KEY_NVIC_Config();//按键中断配置
	USART_NVIC_Config();
	ADVANCE_TIM_NVIC_Config();
}

 /* 
 * ===  整个系统硬件配置函数  =========================================================
 *
 * ====================================================================================
 */
void systemHardwareConfig(void)
{
	/****各种硬件外设******************************************************/
	GPIO_Config();
	/****延时初始化******************************************************/
	delay_init();       
	/****各种中断初始化****************************************************/
	NVIC_Config();  
}

/* 
 * ===  继电器端口的初始化  ===================================================================
 *	RELAY_1_PIN
 *	RELAY_2_PIN
 * ===========================================================================================
 */
 void HF46F_GPIO_Init (void)
{
	GPIO_InitTypeDef		GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RELAY_RCC,ENABLE);
	GPIO_InitStruct.GPIO_Pin=RELAY_1_PIN|RELAY_2_PIN;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_Init(RELAY_PORT,&GPIO_InitStruct);
	RELAY_1_OFF(); 
	RELAY_2_OFF();
}

/* 
 * ===  LED端口的初始化  ===================================================================
 *	Fast_LED_PIN		Fast_LED_PIN
 *	Stable_LED_PIN
 * ===========================================================================================
 */
 void LED_GPIO_Init (void)
{
	GPIO_InitTypeDef		GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RAD_LED_RCC,ENABLE);
	GPIO_InitStruct.GPIO_Pin=RAD_LED_PIN|GREEN_LED_PIN;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_Init(RAD_LED_PORT,&GPIO_InitStruct);
	RAD_LED_OFF();
	GREEN_LED_OFF();
	
	RCC_APB2PeriphClockCmd(BLUE_LED_RCC,ENABLE);
	GPIO_InitStruct.GPIO_Pin=BLUE_LED_PIN;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_Init(BLUE_LED_PORT,&GPIO_InitStruct);
	BLUE_LED_OFF();
}



